﻿using System;
namespace Mefisto.Core.Logging.Contracts
{
    public interface ILoggingProvider
    {
        /// <summary>
        /// Dynamic bag for passing parameters to methods
        /// <remarks>Should be of type IDictionary&lt;string, object&gt; for handling named parameters</remarks>
        /// </summary>
        dynamic LoggingBag { get; set; }

        /// <summary>
        /// Method for logging message
        /// </summary>
        /// <param name="message">Message</param>
        /// <param name="applicationCode">Application code</param>
        void LogMessage(string message, string applicationCode = "");
        
        /// <summary>
        /// Method for logging error
        /// </summary>
        /// <param name="error">Exception occured</param>
        /// <param name="applicationCode">Application code</param>
        void LogError(Exception error, string applicationCode = "");

        /// <summary>
        /// Method for clearing the logging bag
        /// </summary>
        void ClearLoggingBag();
    }
}